package com.correo.modelo.server;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import com.correo.controlador.server.beans.UserDBBean;
import com.correo.database.beans.IBean;
import com.correo.database.server.ManagerDataBase;
import com.correo.database.server.ManagerDataBaseUser;
import com.correo.exceptions.server.AltaException;
import com.correo.exceptions.server.ModifyException;
import com.correo.exceptions.server.RefreshException;
import com.correo.exceptions.server.RemoveException;
import com.correo.exceptions.server.ViewException;

public class ModelUserDB implements IModel {

	public ModelUserDB(){
		
	}
	
	
	
	/*
	 * Obtengo todos los usuarios que tengo hasta el momento en la base de datos
	 */
	public List<UserDBBean> getUsersDB() {
		List<UserDBBean> list=new LinkedList<UserDBBean>();
		//TODO cargar los usuarios que esten en la base de datos
		return list;		
	}
	@Override
	public void alta(IBean userDBBean) throws AltaException, SQLException, ClassNotFoundException {
		// TODO generar el alta del usuario en la base datos
		//validacion
		if(((UserDBBean)userDBBean).getUser().equals("") || ((UserDBBean)userDBBean).getPassword().equals("") ){
			 throw new AltaException("El usuario o el password son incorrectos.");
		}else{
			//			tengo que cargar el usuario en la base de base
			ManagerDataBaseUser userDB = new ManagerDataBaseUser(ManagerDataBase.getInstance().getConnection());
			userDB.alta(userDBBean);//agregar(((UserDBBean)userDBBean).getUser(),((UserDBBean)userDBBean).getPassword());
		}
		
	}
	@Override
	public void modify(IBean bean) throws ModifyException {
		// TODO generar la modificacion del usuario en la base datos
		//validacion
		if(bean==null || ((UserDBBean)bean).getUser().equals("") || ((UserDBBean)bean).getPassword().equals("") ){
			 throw new ModifyException("El usuario o el password es incorrecto.");
		}else{
			//tengo que modificar el usuario en la base de base
		}
		
	}
	@Override
	public void remove(List<IBean> listUserDB) throws RemoveException {
		// TODO generar la baja del usuario en la base datos
		Iterator<IBean> it=listUserDB.iterator();
		UserDBBean user=null;
		while(it.hasNext()){
			user = (UserDBBean)it.next();
			//validacion
			if(user==null || user.getUser().equals("") || user.getPassword().equals("") ){
				 throw new RemoveException("El usuario o el password es incorrecto.");
			}else{
				//tengo que borrar el usuario en la base de base
			}
			
		}
	}
	@Override
	public void view(IBean bean) throws ViewException {
		// TODO Auto-generated method stub
		
	}



	public List<IBean> refresh() throws RefreshException {
		// TODO Auto-generated method stub
		return null;
	}



	
}
